스토리지 클래스와 볼륨 스냅샷

스토리지 클래스와 볼륨 스냅샷은 쿠버네티스에서 지속적인 스토리지를 관리하고 데이터 보호를 위한 메커니즘을 제공합니다.

스토리지 클래스(StorageClass)

스토리지 클래스는 관리자가 다양한 스토리지 옵션을 정의하고, 사용자가 필요에 따라 적절한 스토리지를 동적으로 프로비저닝할 수 있게 해주는 리소스입니다.

볼륨 스냅샷(VolumeSnapshot)

볼륨 스냅샷은 특정 시점의 PersistentVolume 데이터 상태를 캡처하여 백업, 복제, 복원 등에 활용할 수 있는 기능입니다.

클라우드 네트워크 개념과 비교

실습 예시

StorageClass 정의

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast-ssd
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp3
  iopsPerGB: "10"
  fsType: ext4
  encrypted: "true"
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer

동적 PVC 생성

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: database-data
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: fast-ssd
  resources:
    requests:
      storage: 100Gi

VolumeSnapshotClass 정의

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: daily-snapshot
driver: ebs.csi.aws.com
deletionPolicy: Retain
parameters:
  csi.storage.k8s.io/snapshotter-secret-name: snapshotter-secret
  csi.storage.k8s.io/snapshotter-secret-namespace: kube-system

VolumeSnapshot 생성

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: database-snapshot-1
spec:
  volumeSnapshotClassName: daily-snapshot
  source:
    persistentVolumeClaimName: database-data

스냅샷에서 PVC 복원

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: database-data-restore
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: fast-ssd
  resources:
    requests:
      storage: 100Gi
  dataSource:
    name: database-snapshot-1
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io

일반적인 사용 사례

스토리지 관리 모범 사례